This invention relates generally to distributed computing environments and more particularly to the format and management of object properties stored as part of each object in a particular system. More particularly still, the present invention relates to the use of object properties to provide status information to third party applications.
In a distributed environment, such as the Internet, computer information is typically stored in units known as xe2x80x9cresourcesxe2x80x9d or xe2x80x9cobjects.xe2x80x9d Resources may be any entity that can be accessed on the web through a uniform resource locator (URL) or uniform resource identifier (URI). Groups of member resources may be collected into what is known as a xe2x80x9ccollection.xe2x80x9d One particular benefit to grouping resources relates to the fact that once a group of resources are collected, they may be treated in a similar manner as computer files in a non-distributed environment, wherein both the files and the resource collections each have data and metadata. The data is the actual object data for either the object or the resource and the metadata is the information that describes the file or resource, and possibly even the data.
As the Internet and other distributed environments increase in popularity, advances are being made in the representative functionality provided to client systems as the client systems interact with server systems and the resources on the server systems. For instance, past protocols, such as Hypertext Transfer Protocol (HTTP) version 1.1 provided a client the ability to xe2x80x9cputxe2x80x9d information into a server-side application or document. The client used a particular Hypertext Markup Language (HTML) request that included a xe2x80x9cPUTxe2x80x9d command in the header. The server then interpreted this header information and executed the command.
Recent developments have increased the concept of authoring resources on a server system from client system over the distributed network. One particular example relates to the development of the WebDAV standard, which stands for the World Wide Web Distributed Authoring and Versioning standard, referred to herein as simply xe2x80x9cDAV.xe2x80x9d DAV provides a set of headers and methods, which extend the HTTP to provide capabilities for overwrite prevention (locking), properties, and namespace management. A document that was written by the IETF and has been approved by the IESG as Proposed Standard RFC 2518, published February 1999, the standard describes DAV in more detail.
DAV provides for the creation of property objects that are associated with a resource, wherein the properties are similar to properties of a file in a more traditional file system. The properties may store information such as the name of the resource, the author of the resource, the latest version value for the resource (or collection of resources), among others.
Often, third party applications work in combination with a server-side resource systems to provide additional system features or functions, such as virus scanning functions. These third party applications may actually xe2x80x9cinterceptxe2x80x9d each resource access attempt and scan the object for viruses or perform other tests prior to performing the actual access operation. Unfortunately however, performing a scan operation or other tests each time a resource is accessed consumes a significant amount of time. Therefore, a log of information may be maintained to store version information for each resource. For example, the log may maintain a list of resources on the system and whether each resource has been scanned, and if so, which version of virus definition file was used. Using the log of information, the virus scanner can reduce processing time by only scanning resources that are new or modified, or that were scanned by an out-of-date virus definition file.
Although the log may provide a significant improvement over systems that scan every resource before each access, using such a log suffers from some drawbacks. For example, maintaining such an information log requires a significant amount of overhead. Moreover, the process of accessing the log to determine whether items have been scanned reduces overall system performance since a separate file must be located on disk and examined. Additionally the log of information is not updated as resources are copied or backed-up causing unnecessary scanning operations in certain circumstances.
One solution to the performance problems associated with keeping an information log as a separate file has been to keep an xe2x80x9cin-memoryxe2x80x9d log that is created and stored in volatile memory, e.g., RAM. The in-memory log may be accessed more quickly than a separate file, and therefore performance of the system increases when using the in-memory log in place of the log file described above. However, the in-memory log is erased or lost when the power is not delivered to the system, such as when the system is turned off, shut down or rebooted. Thus, any state information or version information may not be determined quickly following a cessation of power. Another drawback associated with the in-memory log is that such a log consumes a significant amount of the operating memory used by the system. Therefore, the in-memory log has not provided an adequate solution to the above-described problems.
It is with respect to these and other considerations that the present invention has been made.
The present invention solves these problems by creating and using a version-specific attribute or property that is stored as part of a resource or object collection, contains specific version information relating to how or when the property was created and is automatically invalidated when a predetermined xe2x80x9cupdatexe2x80x9d event occurs. Third party applications may generally create and access these versions-specific properties to thereby eliminate the need for external logs or databases.
An aspect of the present invention relates to a method of providing version-specific information associated with an object stored in a computer system to an application. The method involves creating a version-specific property that is associated with the object, maintaining the version-specific property to reflect relevant updates to the object by automatically invalidating the version-specific information in response to predetermined access requests and allowing the third party application to analyze the version-specific property.
In accordance with other aspects of the present invention, the application is a third party application such as a virus scan application or a replicator-type application that creates redundant copies of data objects for back-up or performance purposes. Additionally, the version-specific property of the present invention may comprise meta information, version information and mask information. The version information relates to the version of the object itself or of the application used to create the version-specific property and the mask information relates to a policy or definition of the predetermined events that may invalidate the version specific property. In yet other embodiments, the version-specific property may further comprise a digital signature or other security information to either prevent unauthorized access to the property or the data object, or to provide a validating element for other applications in determining whether the data object has been corrupted.
In accordance with still other aspects of the present invention, the version specific property may be invalidated based on predetermined events such as modification of the data within the object, the metadata associated with the object or when other version-specific properties change. The invalidation act may be a deletion or truncation of the version specific property, or any other method of indicating that the version-specific property is invalid.
In accordance with another aspect, the present invention relates to an object format having a version-specific property. The version-specific property has a meta information section, a version information section for storing information related to the version of the application that created the property, and a mask information section for storing information related to predetermined events which cause the invalidation of the property. Additionally, the invention relates to a system providing the protocol for creating and maintaining such version-specific properties.
The invention may be implemented as a computer process, a computing system or as an article of manufacture such as a computer program product. The computer program product may be a computer storage medium readable by a computer system and encoding a computer program of instructions for executing a computer process. The computer program product may also be a propagated signal on a carrier readable by a computing system and encoding a computer program of instructions for executing a computer process.
A more complete appreciation of the present invention and its improvements can be obtained by reference to the accompanying drawings, which are briefly summarized below, to the following detailed description of presently preferred embodiments of the invention, and to the appended claims.